package org.marketlive.entity;

/*
(C) Copyright MarketLive. 2006. All rights reserved.
MarketLive is a trademark of MarketLive, Inc.
Warning: This computer program is protected by copyright law and international treaties.
Unauthorized reproduction or distribution of this program, or any portion of it, may result
in severe civil and criminal penalties, and will be prosecuted to the maximum extent
possible under the law.
*/

/**
 * Provides the ability to add collections of attributes to entities.
 * <p/>
 * <code>IComplexAttributePage</code>s can store attributes that are Java primitive,
 * primitive-wrapper, <code>String</code>, <code>Date</code>, and
 * <code>List</code> types.  Elements in a <code>List</code> on an
 * <code>IComplexAttributePage</code> must implement <code>IComplexAttribute</code>.
 * <p/>
 * @see org.marketlive.entity.IComplexAttribute
 * @see org.marketlive.entity.IAttributePage
 * @see org.marketlive.entity.IEntity
 * @see org.marketlive.entity.IEntityHome
 */
public interface IComplexAttributePage extends IAttributePage {
    /**
     * Returns a new instance of the <code>IComplexAttribute</code> having the given name.
     * The available names are defined in the attribute page implementation, which is
     * configured from the home object of the entity to which it is assigned. If
     * no attribute exists with the given name, returns null.
     *
     * @param attributeName the name of the attribute to retrieve
     * @return a new instance of the attribute with the given name, or null if none exists
     */
    IComplexAttribute getAttributeInstance(final String attributeName);
}
